package com.sirun.cn.fca;

import android.support.multidex.MultiDexApplication;

import com.sirun.cn.fca.constant.CommonConst;
import com.sirun.cn.fca.service.TACService;
import com.squareup.leakcanary.LeakCanary;
import com.tencent.cloud.iov.action.ActionManager;
import com.tencent.cloud.iov.action.AnnotationActionHandler;
import com.tencent.cloud.iov.block.AnnotationBlockFactory;
import com.tencent.cloud.iov.block.BlockManager;
import com.tencent.cloud.iov.kernel.IovKernel;
import com.tencent.cloud.iov.router.Router;
import com.tencent.cloud.iov.util.FileUtils;
import com.tencent.cloud.iov.util.ResourcesUtils;
import com.tencent.cloud.iov.util.UtilServices;
import com.tencent.cloud.iov.util.image.ImageUtils;
import com.tencent.cloud.iov.util.lifecycle.ActivityStackManager;
import com.tencent.cloud.iov.util.log.LogManager;
import com.tencent.cloud.iov.util.storage.TXSharedPreferencesUtils;
import com.tencent.tac.TACApplication;

import cn.sirun.com.fca.account.service.AccountServices;

public class SirunCarApplication extends MultiDexApplication {


    @Override
    public void onCreate() {
        super.onCreate();


        if (LeakCanary.isInAnalyzerProcess(this)) {
            return;
        }

        IovKernel.init(this);
        IovKernel.setCompanyId(CommonConst.COMPANY_ID);
        IovKernel.setSocialInfo("", "");

        // 本地 Activity 栈管理
        registerActivityLifecycleCallbacks(ActivityStackManager.getInstance());

        /* 三方库依赖 */
        initThirdPartLibs();


        /* 应用库模块依赖 */
        initAppLibs();

        /* 应用模组依赖 */
        initModules();


    }

    /**
     * 应用库模块依赖
     */
    private void initAppLibs() {
        // 资源管理
        ResourcesUtils.init(this);
        // 区块布局
        BlockManager.init(this, new AnnotationBlockFactory());
        // 行为管理
        ActionManager.initActionHandler(new AnnotationActionHandler());
        // 页面路由
        Router.init(this);
//        // Sample DB
//        DbHelper.initContext(this);
        // 数据本地化
        FileUtils.init(this);
        // 图片工具类
        ImageUtils.init(this);
    }

    /**
     * 三方库依赖
     */
    private void initThirdPartLibs() {
        // 日志打印
        LogManager.init(this);
        // 内存泄露检测
//        LeakCanary.install(this);
        // 移动开发平台
        TACService.init(this);
        // sharedPreferences 工具类
        TXSharedPreferencesUtils.init(this);
        // 推送服务
//        TXPushManager.getInstance().init(this, createPushConfig());
    }

    /**
     * 应用模组依赖
     */
    private void initModules() {
        AccountServices.init(this);
//        CarServices.init(this);
//        PersonalCenterServices.init(this);
        UtilServices.init(this);
    }
}
